#include "clickable_menu.h"
#include<QDebug>
// 构造函数
ClickableMenu::ClickableMenu(const QString &title, QWidget *parent)
    : QMenu(title, parent)
{
   qDebug()<<"调用父类构造函数"; // 调用父类构造函数

    // 关键：设置属性，确保事件被当前控件处理
    setAttribute(Qt::WA_NoSystemBackground, false);
    setAttribute(Qt::WA_TransparentForMouseEvents, false); // 不透明鼠标事件
    setFocusPolicy(Qt::StrongFocus); // 强制获取焦点
    setEnabled(true); // 确保菜单可用

    // 打印菜单初始状态（调试用）
    qDebug() << "菜单初始大小：" << size(); // 正常应大于 (0,0)
    qDebug() << "菜单初始位置：" << pos();   // 应在窗口可见区域内
}

void ClickableMenu::mousePressEvent(QMouseEvent *event)
{
    qDebug() << "进入鼠标按下事件";
    if (event->button() == Qt::LeftButton && rect().contains(event->pos())) {
        qDebug() << "按下位置有效，接受事件";
        event->accept();
    } else {
        QMenu::mousePressEvent(event);
    }
}

// 重写鼠标释放事件
void ClickableMenu::mouseReleaseEvent(QMouseEvent *event)
{
    qDebug() << "进入鼠标释放事件";
    if (event->button() == Qt::LeftButton && rect().contains(event->pos())) {
        qDebug() << "释放位置有效，发出点击信号";
        emit menuClicked();
        event->accept();
        return;
    }
    QMenu::mouseReleaseEvent(event);
}
